home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / kcl / akcl / akcl1615.lha / h / mp.h < prev    next >
C/C++ Source or Header  |  1991-02-23  |  2KB  |  83 lines

  1.  
  2. #include "genpari.h"
  3. #undef K
  4.  
  5. #undef subis
  6. #define subis(y,x) (x== (1<<31) ? addii(ABS_MOST_NEGS,y) : addsi(-x,y))
  7. GEN subss();
  8.  
  9. #define INT_FLAG 0x1010000
  10.  
  11.  
  12.  
  13. /* the bit length of each word in bignum representation */
  14. #define BIG_RADIX 32
  15.  
  16. /* used for gc protecting */
  17. object big_register_1;
  18.  
  19. object big_minus();
  20. object make_bignum();
  21. object make_integer();
  22. #define big_sign(x) signe(MP(x))
  23. #define set_big_sign(x,sign) setsigne(MP(x),sign)
  24. #define MP(x) ((GEN)((x)->big.big_self))
  25. #define MP_START_LOW(u,x,l)  u = (x)+l
  26. #define MP_START_HIGH(u,x,l)  u = (x)+2
  27. #define MP_NEXT_UP(u) (*(--(u)))
  28. #define MP_NEXT_DOWN(u) (*((u)++))
  29.   /* ith word from the least significant */
  30. #define MP_ITH_WORD(u,i,l) (u)[l-i-1]
  31. #define MP_CODE_WORDS 2
  32. /* MP_LOW(x,lgef(x)) is the least significant  word */
  33. #define MP_LOW(x,l) ((x)[(l)-1])
  34. /* most significant word if l is the lgef(x) */  
  35. #define MP_HIGH(x,l) (x)[2]
  36. #define MP_ONLY_WORD(u) MP_LOW((u),(MP_CODE_WORDS+1))
  37.  
  38.   
  39.   
  40.   
  41.   
  42.   
  43.   
  44. #define MP_FIRST(x) ((MP(x))[2])
  45. #define MP_SIGN(x) (signe(MP(x)))
  46. #define ZERO_BIG(x) \
  47.   do {     (x)->big.big_length = 2; \
  48.     (x)->big.big_self = gzero;} while(0)
  49.  
  50.  
  51.  
  52.  
  53.  
  54.                
  55.  
  56. GEN addss();
  57.  
  58. #define MPOP(dowith, fun,x1,x2) \
  59.   do{GEN _xgen ; \
  60.      save_avma ; \
  61.      _xgen =fun(x1,x2) ;\
  62.      restore_avma; \
  63.      dowith make_integer(_xgen);  }while(0)
  64.  
  65.  
  66. #define MPOP_DEST(where ,fun,x1,x2) \
  67.   do{GEN _xgen ; \
  68.      save_avma ; \
  69.      _xgen =fun(x1,x2) ;\
  70.      restore_avma; \
  71.      gcopy_to_big(_xgen,where);  }while(0)
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.   
  80.  
  81.  
  82.  
  83.